@Niki
2年前 提问
1个回答

云计算并行计算MPI点对点四种通信模式有哪些

Andrew
2年前

云计算并行计算MPI点对点四种通信模式有以下这些:

  • 标准通信模式:进程可以随意地发送和接收消息,与是否存在匹配的消息接收或发送进程无关。MPI自身决定是否对发送的数据进行缓存,而不是由程序员决定。由于缓存要付出代价,会延长数据通信的时间,而且缓冲区也并不总是可以得到,这样 MPI 可以不缓存将要发出的数据,只有当相应的接收调用被执行后,并且发送数据完全到达接收缓冲区后,发送操作才算完成。标准模式可以分为两类:阻塞式和非阻塞式。在阻塞式中,消息发送函数返回,用户可以对消息缓冲区进行处理,不会影响已经发送的消息;接收函数返回,用户就可以使用接收到的消息数据,主要的函数有MPI_Send( )和MPI_Recv( )。对于非阻塞通信,发送和接收函数返回后,必须调用另一类函数确保它们的正确完成,在确定发送或者接收成功前,缓冲区内的数据不一定正确,但是可以执行其他与读取缓冲区无关的操作,因此比阻塞式通信节省时间,其主要的函数有MPI_Isend( )、MPI_lrecv( )和MPI_Wait()。

  • 缓存通信模式:这种模式下,由用户直接对通信缓冲区进行申请、使用和释放,因此,缓存模式下对通信缓冲区的合理与正确性使用是由程序设计人员自己保证的。用户可以首先申请缓冲区,然后把它提交给 MPI 作为发送缓存,用于支持发送进程的缓存通信模式。这样,当缓存通信方式发生时,MPI就可以使用这些缓冲区对消息进行缓存,不使用这些缓冲区时,可以将缓冲区释放。

  • 同步通信模式:同步通信模式的开始并不依赖于接收进程相应的接收操作是否已经启动,但是同步发送却必须等到相应的接收进程开始后才可以正确返回。因此,同步发送返回后,意味着发送缓冲区中的数据已经全部被系统缓冲区缓存,并且已经开始发送。这样当同步发送返回后,发送缓冲区可以被释放或者被重新使用。

  • 就绪通信模式:这种模式下,要求接收操作先于发送操作启动,只有当接收进程的接收操作已经启动,才可以在发送进程中启动发送操作:否则,发送操作将出错。对于非阻塞发送操作的正确返回,并不意味着发送已完成,但是对于阻塞发送的正确返回,发送缓冲区可以重复使用,不需要同步方式的等待。